package main

import "fmt"

func main() {
	testClosure1()
}

func Adder() func(int) int {
	var x int
	return func(d int) int {
		x += d
		return x
	}
}

func testClosure1() {
	f1 := Adder() //f1 声明周期没有结束 x 的声明周期就没结束
	ret := f1(10)
	fmt.Printf("f1(10) = %v\n", ret)

	ret = f1(100)
	fmt.Printf("f1(100) = %v\n", ret)

	ret = f1(1000)
	fmt.Printf("f1(1000) = %v\n", ret)

	f1 = Adder() //f1 声明周期没有结束 x 的声明周期就没结束
	ret = f1(1)
	fmt.Printf("f1(1) = %v\n", ret)
}

func testExample() {

}
